home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Kompresni & kodovaci programy / ucl-0.91 / README < prev    next >
PGP Signed Message  |  2000-02-24  |  6KB  |  193 lines

  1. -----BEGIN PGP SIGNED MESSAGE-----
  2.  
  3.  
  4.                  ooooo     ooo   .oooooo.   ooooo
  5.                  `888'     `8'  d8P'  `Y8b  `888'
  6.                   888       8  888           888
  7.                   888       8  888           888
  8.                   888       8  888           888
  9.                   `88.    .8'  `88b    ooo   888       o
  10.                     `YbodP'     `Y8bood8P'  o888ooooood8
  11.  
  12.  
  13.                       The UCL Compression Library
  14.                              Version 0.90
  15.  
  16.       Copyright (c) 1996, 1997, 1998, 1999 2000 Markus F.X.J Oberhumer
  17.                   <markus.oberhumer@jk.uni-linz.ac.at>
  18.             http://wildsau.idv.uni-linz.ac.at/mfx/ucl.html
  19.  
  20.  
  21.  Abstract
  22.  --------
  23.  
  24.  UCL is a portable lossless data compression library written in ANSI C.
  25.  
  26.  UCL implements a number of compression algorithms that achieve an
  27.  excellent compression ratio while allowing *very* fast decompression.
  28.  Decompression requires no additional memory.
  29.  
  30.  UCL is distributed under the terms of the GNU General Public License (GPL).
  31.  
  32.  
  33.  Overview
  34.  --------
  35.  
  36.  UCL implements a number of algorithms with the following features:
  37.  
  38.    - Decompression is simple and *very* fast.
  39.    - Requires no memory for decompression.
  40.    - The decompressors can be squeezed into less than 200 bytes of code.
  41.    - Includes compression levels for generating pre-compressed
  42.      data which achieve an excellent compression ratio.
  43.    - Allows you to dial up extra compression at a speed cost in the
  44.      compressor. The speed of the decompressor is not reduced.
  45.    - Algorithm is thread safe.
  46.    - Algorithm is lossless.
  47.  
  48.  UCL supports in-place decompression.
  49.  
  50.  
  51.  Design criteria
  52.  ---------------
  53.  
  54.  UCL's main design goal was a very high decompression speed while
  55.  achieving an excellent compression ratio. Real-time decompression should
  56.  be possible for virtually any application. The implementation of the
  57.  NRV2B decompressor in optimized i386 assembler code runs about at
  58.  the fifth of the speed of a memcpy() - and even faster for many files.
  59.  
  60.  
  61.  Related work
  62.  ------------
  63.  
  64.  This section describes how UCL compares to some of my other
  65.  compression technologies.
  66.  
  67.  
  68.  * LZO
  69.    ---
  70.    http://wildsau.idv.uni-linz.ac.at/mfx/lzo.html
  71.    LZO is distributed under the terms of the GNU GPL.
  72.  
  73.    LZO is a data compression library that focuses on
  74.    *extremly* fast decompression, and also implements some
  75.    pretty fast compression algorithms.
  76.  
  77.  
  78.  * NRV
  79.    ---
  80.    http://wildsau.idv.uni-linz.ac.at/mfx/nrv.html
  81.    NRV is not publicly available.
  82.  
  83.    NRV started life as an experimental compression library and has since
  84.    grown into a meta-generator for compression algorithms of almost any kind.
  85.  
  86.    NRV supports a virtually unlimited number of different algorithms by
  87.    glueing typical data compression components. By using a combination
  88.    of sophisticated high level abstractions and advanced information
  89.    theory concepts it usually achieves an incredible compression ratio.
  90.  
  91.  
  92.  * UCL
  93.    ---
  94.    http://wildsau.idv.uni-linz.ac.at/mfx/ucl.html
  95.    UCL is distributed under the terms of the GNU GPL.
  96.  
  97.    UCL is a re-implementation of some concrete algorithms that have
  98.    proven especially useful during the NRV development.
  99.  
  100.    As compared to LZO, the UCL algorithms achieve a better compression
  101.    ratio but decompression is somewhat slower. See below.
  102.  
  103.  
  104.  * UPX
  105.    ---
  106.    http://upx.tsx.org
  107.    UPX is distributed under the terms of the GNU GPL.
  108.  
  109.    UPX is a very powerful executable packer that can be configured
  110.    to use either NRV or UCL for actual compression services. It
  111.    currently supports the NRV2B and NRV2D algorithms.
  112.  
  113.  
  114.  Portability
  115.  -----------
  116.  
  117.  UCL's decompressors should work on any system around - they could even
  118.  get ported to 8-bit processors such as the Z-80 or 6502.
  119.  
  120.  UCL's compressors currently require at least 32-bit integers. While
  121.  porting them to more restricted environments (such as 16-bit DOS)
  122.  should be possible without too much effort this is not considered
  123.  important at this time.
  124.  
  125.  
  126.  How fast is fast ?
  127.  ------------------
  128.  
  129.  Here are some rough timings on my old Intel Pentium 133:
  130.  
  131.    memcpy():                                    ~60 MB/sec
  132.    LZO decompression in optimized assembler:    ~20 MB/sec
  133.    LZO decompression in C:                      ~16 MB/sec
  134.    UCL decompression in optimized assembler:    ~13 MB/sec
  135.  
  136.  Your mileage may vary and you're encouraged to run your own benchmarks.
  137.  
  138.  Also note that UCL's C language decompressors are not optimized very
  139.  much yet, so you should use the assembler versions whenever possible.
  140.  
  141.  
  142.  Documentation (preliminary)
  143.  ---------------------------
  144.  
  145.  Currently UCL implements 2 of NRV's algorithms, namely NRV2B and NRV2D.
  146.  
  147.  UCL is a block compressor, i.e. each memory block passed to the
  148.  compressor will get compressed independently.
  149.  
  150.  The API of UCL is basically identical to that of LZO. Due to current
  151.  lack of documentation you are strongly advised to download LZO
  152.  and study its documentation and example programs first:
  153.  
  154.      http://wildsau.idv.uni-linz.ac.at/mfx/lzo.html
  155.  
  156.  The API of UCL is actually very simple: there's a compress() function
  157.  that compresses a block of memory, and there's a decompress() function
  158.  that handles decompression. That's more or less all you need to know.
  159.  
  160.  See the `examples' directory for some demo programs.
  161.  
  162.  UCL will expand non-compressible data by a little amount. I suggest
  163.  using this formula for a worst-case expansion calculation:
  164.  
  165.      output_block_size = input_block_size + (input_block_size / 8) + 256
  166.  
  167.  
  168.  COPYRIGHT
  169.  ---------
  170.  
  171.  The UCL library is Copyright (C) 1996, 1997, 1998, 1999, 2000 by
  172.  Markus Franz Xaver Johannes Oberhumer <markus.oberhumer@jk.uni-linz.ac.at>
  173.  
  174.  The UCL library is distributed under the terms of the GNU General Public
  175.  License (GPL). See the file COPYING.
  176.  
  177.  Special licenses for commercial and other applications which
  178.  are not willing to accept the GNU General Public License
  179.  are available by contacting the author.
  180.  
  181.  
  182.  
  183. -----BEGIN PGP SIGNATURE-----
  184. Version: 2.6.3ia
  185. Charset: noconv
  186.  
  187. iQCVAwUBOLUE1m10fyLu8beJAQG0RgQAjx/Bbm8FuAAJ9tayaC1EaFoVgUQsEzsM
  188. Ad9KPXGlskdYJy80Hn/wqzOEXv9lTlL65wNQgOzQtK/OHaJk7M5jKhr3rPnaHk6c
  189. 2zOvyDk32eUHL3ie0VdgyOtyFv+R+tbirk4R+nsytx8pCEiiJVfe3k4roVyS64iZ
  190. 21BcB2XQZjk=
  191. =XXSG
  192. -----END PGP SIGNATURE-----
  193.